@extends('layouts.admin')

@section('title')
    预设组 &rarr; 新建预设
@endsection

@section('content-header')
    <h1>新建预设<small>创建一个新的预设以分配给服务器。</small></h1>
    <ol class="breadcrumb">
        <li><a href="{{ route('admin.index') }}">管理</a></li>
        <li><a href="{{ route('admin.nests') }}">预设组</a></li>
        <li class="active">新建预设</li>
    </ol>
@endsection

@section('content')
    <form action="{{ route('admin.nests.egg.new') }}" method="POST">
        <div class="row">
            <div class="col-xs-12">
                <div class="box">
                    <div class="box-header with-border">
                        <h3 class="box-title">基本配置</h3>
                    </div>
                    <div class="box-body">
                        <div class="row">
                            <div class="col-sm-6">
                                <div class="form-group">
                                    <label for="pNestId" class="form-label">关联预设组</label>
                                    <div>
                                        <select name="nest_id" id="pNestId">
                                            @foreach($nests as $nest)
                                                <option value="{{ $nest->id }}" {{ old('nest_id') != $nest->id ?: 'selected' }}>
                                                    {{ $nest->name }} &lt;{{ $nest->author }}&gt;</option>
                                            @endforeach
                                        </select>
                                        <p class="text-muted small">预设组相当于一个分类。您可以在一个预设组中放置多个预设，但建议将相关的预设放在同一个组中。</p>
                                    </div>
                                </div>
                                <div class="form-group">
                                    <label for="pName" class="form-label">名称</label>
                                    <input type="text" id="pName" name="name" value="{{ old('name') }}"
                                        class="form-control" />
                                    <p class="text-muted small">用于标识此预设的简单易懂的名称。用户将看到此名称作为他们的游戏服务器类型。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pDescription" class="form-label">描述</label>
                                    <textarea id="pDescription" name="description" class="form-control"
                                        rows="8">{{ old('description') }}</textarea>
                                    <p class="text-muted small">此预设的详细描述。</p>
                                </div>
                                <div class="form-group">
                                    <div class="checkbox checkbox-primary no-margin-bottom">
                                        <input id="pForceOutgoingIp" name="force_outgoing_ip" type="checkbox" value="1" {{ \Pterodactyl\Helpers\Utilities::checked('force_outgoing_ip', 0) }} />
                                        <label for="pForceOutgoingIp" class="strong">强制出口IP</label>
                                        <p class="text-muted small">
                                            强制所有出站网络流量将其源IP NAT转换为服务器主要分配IP。
                                            当节点有多个公共IP地址时，某些游戏需要此设置才能正常工作。
                                            <br>
                                            <strong>
                                                启用此选项将禁用使用此预设的服务器的内部网络，
                                                导致它们无法在节点内部访问同一节点上的其他服务器。
                                            </strong>
                                        </p>
                                    </div>
                                </div>
                            </div>
                            <div class="col-sm-6">
                                <div class="form-group">
                                    <label for="pDockerImage" class="control-label">Docker镜像</label>
                                    <textarea id="pDockerImages" name="docker_images" rows="4"
                                        placeholder="quay.io/pterodactyl/service"
                                        class="form-control">{{ old('docker_images') }}</textarea>
                                    <p class="text-muted small">使用此预设的服务器可用的Docker镜像。每行输入一个。如果提供多个值，用户将能够从此列表中选择。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pStartup" class="control-label">启动命令</label>
                                    <textarea id="pStartup" name="startup" class="form-control"
                                        rows="10">{{ old('startup') }}</textarea>
                                    <p class="text-muted small">使用此预设创建新服务器时使用的默认启动命令。您可以根据需要为每个服务器更改此设置。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pConfigFeatures" class="control-label">功能特性</label>
                                    <div>
                                        <select class="form-control" name="features[]" id="pConfigFeatures" multiple>
                                        </select>
                                        <p class="text-muted small">属于此预设的附加功能。可用于配置额外的面板修改。</p>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="col-xs-12">
                <div class="box">
                    <div class="box-header with-border">
                        <h3 class="box-title">进程管理</h3>
                    </div>
                    <div class="box-body">
                        <div class="row">
                            <div class="col-xs-12">
                                <div class="alert alert-warning">
                                    <p>除非您从"复制设置自"下拉列表中选择其他选项，否则所有字段都是必填的，在这种情况下，可以留空字段以使用该选项的值。</p>
                                </div>
                            </div>
                            <div class="col-sm-6">
                                <div class="form-group">
                                    <label for="pConfigFrom" class="form-label">复制设置自</label>
                                    <select name="config_from" id="pConfigFrom" class="form-control">
                                        <option value="">无</option>
                                    </select>
                                    <p class="text-muted small">如果您想默认使用其他预设的设置，请从上面的下拉列表中选择它。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pConfigStop" class="form-label">停止命令</label>
                                    <input type="text" id="pConfigStop" name="config_stop" class="form-control"
                                        value="{{ old('config_stop') }}" />
                                    <p class="text-muted small">
                                        应该发送给服务器进程以优雅地停止它们的命令。如果需要发送<code>SIGINT</code>，则应在此处输入<code>^C</code>。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pConfigLogs" class="form-label">日志配置</label>
                                    <textarea data-action="handle-tabs" id="pConfigLogs" name="config_logs"
                                        class="form-control" rows="6">{{ old('config_logs') }}</textarea>
                                    <p class="text-muted small">这应该是日志文件存储位置的JSON表示，以及守护程序是否应创建自定义日志。</p>
                                </div>
                            </div>
                            <div class="col-sm-6">
                                <div class="form-group">
                                    <label for="pConfigFiles" class="form-label">配置文件</label>
                                    <textarea data-action="handle-tabs" id="pConfigFiles" name="config_files"
                                        class="form-control" rows="6">{{ old('config_files') }}</textarea>
                                    <p class="text-muted small">这应该是要修改的配置文件及其应更改的部分的JSON表示。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pConfigStartup" class="form-label">启动配置</label>
                                    <textarea data-action="handle-tabs" id="pConfigStartup" name="config_startup"
                                        class="form-control" rows="6">{{ old('config_startup') }}</textarea>
                                    <p class="text-muted small">这应该是守护程序在启动服务器以确定完成时应查找的值的JSON表示。</p>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="box-footer">
                        {!! csrf_field() !!}
                        <button type="submit" class="btn btn-success btn-sm pull-right">创建</button>
                    </div>
                </div>
            </div>
        </div>
    </form>
@endsection

@section('footer-scripts')
    @parent
    {!! Theme::js('vendor/lodash/lodash.js') !!}
    <script>
        $(document).ready(function () {
            $('#pNestId').select2().change();
            $('#pConfigFrom').select2();
        });
        $('#pNestId').on('change', function (event) {
            $('#pConfigFrom').html('<option value="">无</option>').select2({
                data: $.map(_.get(Pterodactyl.nests, $(this).val() + '.eggs', []), function (item) {
                    return {
                        id: item.id,
                        text: item.name + ' <' + item.author + '>',
                    };
                }),
            });
        });
        $('textarea[data-action="handle-tabs"]').on('keydown', function (event) {
            if (event.keyCode === 9) {
                event.preventDefault();

                var curPos = $(this)[0].selectionStart;
                var prepend = $(this).val().substr(0, curPos);
                var append = $(this).val().substr(curPos);

                $(this).val(prepend + '    ' + append);
            }
        });
        $('#pConfigFeatures').select2({
            tags: true,
            selectOnClose: false,
            tokenSeparators: [',', ' '],
        });
    </script>
@endsection